import java.util.*;

public class main {
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        while (sc.hasNext()){
            int n= sc.nextInt();
            int m= sc.nextInt();
            int k=sc.nextInt();
            int[][] map=new int[n+1][m+1];
            //将蘑菇用1标出来
            while (0!=k){
                int x= sc.nextInt();
                int y=sc.nextInt();
                map[x][y]=1;
                k--;
            }
            //记录每个位置概率的数组
            double[][] dp = new double[n+1][m+1];
            dp[1][1] = 1.0;
            //遍历计算每个位置的概率
            for (int i = 1; i <=n; i++) {
                for (int j = 1; j <=m ; j++) {
                    if (!(i == 1 && j == 1)){
                        dp[i][j] = dp[i-1][j]*(j==m? 1.0:0.5) + dp[i][j-1]*
                                (i==n? 1.0:0.5);
                    }
                    if(map[i][j] == 1){
                        dp[i][j] = 0.0;
                    }
                }
            }
            System.out.printf("%.2f\n", dp[n][m]);
        }
    }
}

